home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 January: Mac OS SDK / Dev.CD Jan 96 SDK / Dev.CD Jan 96 SDK1.toast / Development Kits (Disc 1) / OpenTransport / Open Transport 1.0.5b4 / Open Transport SDK / Open Tpt Module Developer / OT Module Release Notes next >
Encoding:
Text File  |  1995-06-24  |  11.7 KB  |  172 lines  |  [TEXT/ttxt]

  1.  
  2.                 Open Transport Module Release Notes
  3.  
  4.                 Revision 1.0.5b2
  5.        06/20/95
  6.  
  7.  
  8.  
  9. Comments should be sent to AppleLink address OPENTPT or Internet address 'opentpt@applelink.apple.com' Unfortunately, we can not provide general technical support via this AppleLink address.  Technical support questions should be directed to AppleLink address DEVSUPPORT or Internet address 'devsupport@applelink.apple.com'.
  10.  
  11.  
  12. What this release contains
  13.  
  14. This release includes  
  15. • an Installer that will install Open Transport 1.0.5b2 and Apple Shared Library Manager 2.0 onto your machine. 
  16. • a Developer Files folder that contains:
  17.  
  18. •    An ASLM Developer folder contain tools for developing ASLM shared libraries, as well as debugging versions of the Shared Library Manager itself.
  19.  
  20. •    An Open Tpt Client Developer folder that contains documents, header files,  MPW libraries, and sample programs
  21.  
  22. •    An Open Tpt Module Developer folder that contains header files and libraries for creating DLPI drivers (See the document "Open Tpt Driver Dev. Note" in the documents folder.
  23.  
  24. WARNINGS
  25.  
  26. See also the ReadMe file that accompanies Open Transport
  27.  
  28. • Any code developed using the 68K interfaces for Open Transport using the SDK with this release will not be compatibile with the 1.1 release.  Do not release any products for 68K Open Transport until this warning goes away.
  29.  
  30. API changes since 1.0f1
  31.  
  32. • Added kOTModLowerIsTPI, kOTModUpperIsTPI, kOTModLowerIsDLPI, kOTModLowerIsTPI flags to the flags that should be added to the install_flags field of the install_info structure.
  33.  
  34.  
  35. Other changes since 1.0f1
  36.  
  37. • Timer resolution was changed from 1 milliseconds to 8 milliseconds for performance reasons.  What this means is that timers will fire at the closes 8 millisecond boundary to the time requested.  Any request for time less than 8 milliseconds will fire in 8 milliseconds.
  38.  
  39.  
  40. .Developing Open Transport compliant protocols or drivers
  41.  
  42. This release does contain information for developers who wish to write DLPI hardware drivers for Open Transport.  The document "Open Tpt Driver Dev. Note" describes the procedure for creating a loadable STREAMS module for driver writers.  The document does not fully address the needs of protocol implementors, but all of the header files and libraries are present to do the development, and the differences between writing drivers and protocol modules is minimal (You can probably glean the differences by reading the "Open Tpt Driver Dev. Note" document.  We still need to document how to get your module usable by the streams environment if "plumbing" is more involved than just "pushing" the module on top of a pre-existing STREAM.
  43.  
  44. All protocols in the Open Transport architecture are implemented as UNIX System V, release 4.2 STREAMS modules. Open Transport includes a standard STREAMS environment that allows STREAMS modules to be recompiled on the Macintosh. About 20 lines of code, and one ASLM “export” file have to be written to move a standard STREAMS module into the Open Transport environment.
  45.  
  46. You may want to read about UNIX STREAMS and the TPI and DLPI specifications which define the formats of messages that flow between STREAMS modules.
  47. Sources of information that are applicable to XTI include:
  48.  
  49. - OSF/1 Operating System: Network Applications Programmer's Guide; Open Software Foundation, Prentice Hall, ISBN 0-13-640145-7
  50.  
  51. - UNIX Network Programming; W. Richard Stevens, Prentice Hall, ISBN 0-13-949876-1
  52.  
  53. - Programming UNIX SVR4.2: Network Programming Interhces; UNIX Press (A Prentice Hall title), ISBN 0-13-017641-9
  54.  
  55. - X/Open CAE Specification: X/Open Transport Interface (XTI); X/Open Company, Ltd. (XO/CAE/91/600) ISBN 1-872630-29-4 (also available on E•T•O in electronic form)
  56.  
  57. Sources of information that are applicable to STREAMS modules and drivers include:
  58.  
  59. -STREAMS  Modules and Drivers, UNIX SVR4.2; UNIX Press (A Prentice Hall title), ISBN 0-13-066879-6. A much improved revision to the former Programmer’s Guide for STREAMS (listed below). It also includes the TPI specification and a description of DLPI.
  60.  
  61. - UNIX System V Relase 4: Programmer's Guide: STREAMS; Unix Press (A Prentice Hall title), ISBN - 0-13-020660-1
  62.  
  63. -UNIX System V Network Programming; Stephen A. Rago, Addison-Wesley Publishing Company, ISBN 0-201-56318-5. A good book for learning to write STREAMS modules and drivers. The book contains (among other things) a discussion of TLI (precursor to XTI) and a complete DPLI STREAMS driver for Ethernet. 
  64.  
  65. - Transport Provider Interface Specification, revision 1.5 (92/12/10); UNIX International, OSI Special Interest Group (also available on E•T•O in electronic form)
  66.  
  67. - Data Link Provider Interface Specification, revision 2.0.0 (91/08/20); UNIX International, OSI Work Group (also available on E•T•O in electronic form)
  68.  
  69. Debugger support
  70.  
  71. The installer will install Open Transport Debugger preferences into the DebuggerPrefs file in your System Folder, if you have one. These debugger prefs contain the ASLM debugger prefs plus Macsbug templates for virtually all structures used in the API. A Macbug dcmd is installed also that can display strings for error messages. For example, typing “OTErr -3158” will tell you what error number -3158 is.
  72.  
  73. Sample Code
  74.  
  75. There is a "Samples" folder which contains sample modules and source files.
  76.  
  77. All of the samples have makefiles that can be used to build them. All of the makefiles use shell variables that must be set to the full pathname of the folders containing the Apple Shared Library Manager and Open Transport header files and object libraries. If you drag the header files and object files from the developer tools diskette to the normal places in MPW, you’d want to set up the shell variables like this before building.
  78.  
  79.                     Set ASLMIncludes “{CIncludes}”
  80.                     Set OTIncludes “{CIncludes}”
  81.                     Set OTModIncludes “{CIncludes}”
  82.                     Set OTLibs “{CLibraries}”
  83.                     Set ASLMLibs “{CLibraries}”
  84.                     Export ASLMIncludes OTIncludes OTLibs ASLMLibs
  85.  
  86. After doing this,you can build the sample programs by setting your current MPW directory to be the one containing the samples and using the ‘make’ tool:
  87.  
  88. Make -f Makefile.SampleModules
  89.  
  90. OpenTransport header files require the header files that were released on E.T.O. #15 in the "Latest MPW" folder. 
  91.  
  92. Earlier Release Notes
  93.  
  94. API changes since 1.0b3
  95.  
  96. • There was some confusion over the kOTModIsPortDriver bit being dropped and adding a kOTModIsComplexDriver bit.  Here's the deal:  For standard drivers that can just be "opened" by STREAMS, you should just have the kOTModIsDriver bit set in your install_info.  This means that the kOTModIsPortDriver which you used to also set should just be removed.   
  97.  
  98. The kOTModIsComplexDriver bit is a flag to tell Open Transport that when someone wants to open your driver, it is more complicated than just a simple stream open call (an example would be an IPCP driver, which is an IP-related driver that sits on top of PPP and a serial port - It needs to be "pushed" or "linked" with PPP, and then it is clone-opened) .  Instead, a "Configurator" is required.  The "Configurator" architecture is in the process of being documented, and some documentation should be available by late June.  
  99.  
  100.  
  101. Other changes since 1.0b3
  102.  
  103. • Many of the utility functions that are used by STREAM modules used to be in a library called OTUtilityLib that was shared between client and kernel code.  Since under Copland, it may not be feasible to share all of this code, OTUtilityLib functions are now exported through the OTKernelLib to allow us to change where the function is implemented without modules having to change.  HOWEVER, this means that modules linked with prior version of Open Transport will not work with this version and need to be relinked (If you are linked with 1.0b4 or higher, you can disregard this).
  104.  
  105. API changes since 1.0b2
  106.  
  107. NOTE: you should also read the OT Client Release Notes file
  108.  
  109. • The TPortRecord structure was modified to include an fStreamtab field so that drivers can get to the "real" streamtab being used by Open Transport, if necessary.
  110.  
  111. • The kOTModIsPortDriver flag for the install_flags in GetOTInstallInfo was dropped.  It was never being used by Open Transport.  Instead a kOTModIsComplexDriver bit was added to tell Open Transport that the driver is more complicated than just "opening" it.
  112.  
  113. • The TerminateStreamModule call is now passed the contextPtr (a PCIInfo structure pointer for PCI drivers).  This is so that ASLM drivers can recover their context (ASLM drivers don't have per-instantiation globals like CFM drivers do).
  114.  
  115.  
  116. Other changes since 1.0b2
  117.  
  118. • When instantiating a second instance of a CFM module or driver, use the kNewCFragCopy load option so that a new copy of global variables is created for the module/driver.
  119.  
  120. API changes since 1.0b1
  121.  
  122. • The TPortRecord structure was modified.
  123.  
  124. • OTEnterDeferredTask/OTLeaveDeferredTask were renamed to OTEnterCriticalSection/OTLeaveCriticalSection.
  125.  
  126. Other changes since 1.0b1
  127.  
  128. • A module returning kENOENTErr from it's ValidateHardware routine will now cause Open Transport to try and find another driver that works.
  129.  
  130. API changes since 1.0a3
  131.  
  132. • The OTAllocPortMem and OTFreePortMem functions were added to better support port scanners on non-PCI systems.  Using these functions instead of OTAllocMem and OTFreeMem keep the whole STREAMS infrastructure from being loaded when it is not needed.
  133.  
  134. • The OTLIFO structure was not obsoleted as planned.  OTLIFO and OTList still exist separately.  There are now no plans to obsolete OTLIFO.  
  135.  
  136. • OTList was changed to a singly-linked list from a doubly-linked list, and the API changed accordingly.
  137.  
  138. • OTAcquireLock and OTClearLock were added.  In this release, they are just front-ends to the atomic set bit instructions.  In the next release, OTAcquireLock will be implemented as an actual function.  The main reason for this change is that OTAcquireLock can be implemented to have a much short interval where the lock must be retried than is possible with the atomic bit instructions.
  139.  
  140. • Several new APIs were added to OpenTptModule.h
  141.  
  142. • OTFindPortByDev now only takes 1 parameter.  The 2nd parameter was returning a value that can be determined by inspecting the TPortRecord returned.
  143.  
  144. • OTEnterInterrupt and OTLeaveInterrupt now take no parameters.
  145.  
  146. • EnterOTContext and LeaveOTContext were dropped, and are not needed.
  147.  
  148. • OTDestroyDeferredTask now returns an OSStatus value.  OTDestroyDeferredTask may return kEAGAINErr if you are trying to destroy the deferred task while it is scheduled (this can only happen of you destroy the deferred task from within an interrupt service routine or another deferred task, which is rare)
  149.  
  150. • STREAM drivers are no longer required to call OTInitModule or OTTerminateModule - they still exist for compatibility, but do nothing.
  151.  
  152.  • A new device equate was added for 100 MB Ethernet
  153.  
  154. • Support for ValidateHardware returning kENOENTErr (the "it's not my hardware" error) has been added.
  155.  
  156. • Support for Ethernet "Raw Mode" was added via an IOCTL call
  157.  
  158. • When PCI drivers are loaded, their complete closure is now locked down in memory.
  159.  
  160. Other changes since 1.0a3
  161.  
  162. • The Open Tpt Ethernet Dev. Note has been updated to better describe IPX support.
  163.  
  164. • "Raw mode" support was added for link-layer drivers.  See the Open Tpt Ethernet Dev. Note and the Open Tpt 8022 Dev. Note for details.
  165.  
  166. • The Open Tpt Module Dev. Note is still a placeholder.  It contains the prior contents of the Open Tpt Driver Dev. Note.  
  167.  
  168. • For drivers, the only "put" routine is allowed at primary interrupt time is a "putq" to your own lower queue.  This allowed us to take out special code that slows things down in all the other "put" routines.  You can always schedule your own deferred task to make one of the other "put" function calls.
  169.  
  170. • OTAllocMsg now uses the "esballoc" function instead of the "esballoca" function.  What this means is that clients are now allowed to overwrite data in your buffers until the buffer is freed.  If this is not desireable, use esballoca directly.
  171.  
  172.